home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / src / GLperf3.12-src.lha / GLperf / Primitve.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-01  |  31.3 KB  |  998 lines

  1. /*
  2.  *   (C) COPYRIGHT International Business Machines Corp. 1993
  3.  *   All Rights Reserved
  4.  *   Licensed Materials - Property of IBM
  5.  *   US Government Users Restricted Rights - Use, duplication or
  6.  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7.  
  8. //
  9. // Permission to use, copy, modify, and distribute this software and its
  10. // documentation for any purpose and without fee is hereby granted, provided
  11. // that the above copyright notice appear in all copies and that both that
  12. // copyright notice and this permission notice appear in supporting
  13. // documentation, and that the name of I.B.M. not be used in advertising
  14. // or publicity pertaining to distribution of the software without specific,
  15. // written prior permission. I.B.M. makes no representations about the
  16. // suitability of this software for any purpose.  It is provided "as is"
  17. // without express or implied warranty.
  18. //
  19. // I.B.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  20. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL I.B.M.
  21. // BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  22. // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  23. // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  24. // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  25. //
  26. // Author:  John Spitzer, IBM AWS Graphics Systems (Austin)
  27. //
  28. */
  29.  
  30. #if (defined(INC_REASON)) && (INC_REASON == INFO_ITEM_STRUCT)
  31. #include "Drawn.h"
  32.     int projection;     /* Perspective or Parallel                                        */
  33.     int textureData;    /* Can be PerVertex or None                                       */
  34.     int normalData;     /* Can be PerVertex, PerFacet, or None                            */
  35.     int colorData;      /* Can be PerVertex, PerFacet, or None                            */
  36.     int fogMode;        /* Can be Off, GL_LINEAR, GL_EXP, or GL_EXP2                      */
  37.     int alphaTest;      /* Can be Off, GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL,            */
  38.     GLfloat alphaRef;   /* [0.0, 1.0] */
  39.                         /* GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, or GL_ALWAYS               */
  40.     int stencilTest;    /* Can be Off, GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL,            */
  41.                         /* GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, or GL_ALWAYS               */
  42.     int depthMask;      /* On or Off                                                      */
  43.     int depthTest;      /* Can be Off, GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL,            */
  44.                         /* GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, or GL_ALWAYS               */
  45.     int blend;          /* On or Off                                                      */
  46. #if defined(GL_EXT_blend_logic_op) || defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_subtract)
  47.     int blendEq;        /* Blend Equation extensions                                      */
  48. #endif
  49.     int srcBlend;       /* Can be GL_ZERO,  GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, */
  50.                         /* GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA,            */
  51.                         /* GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE                  */
  52.     int dstBlend;       /* Can be GL_ZERO,  GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, */
  53.                         /* GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA,            */
  54.                         /* GL_ONE_MINUS_DST_ALPHA                                         */
  55.     int logicOp;        /* Can be one of a lot of things                                  */
  56.     int texture;        /* Can be Off, GL_TEXTURE_1D, or GL_TEXTURE_2D                    */
  57.     int texWidth;
  58.     int texHeight;
  59.     int texDepth;
  60.     int texExtent;
  61.     int texBorder;
  62.     int texMagFilter;
  63.     int texMinFilter;
  64.     int texWrapS;       /* GL_CLAMP or GL_REPEAT                                          */
  65.     int texWrapT;       /* GL_CLAMP or GL_REPEAT                                          */
  66. #ifdef GL_EXT_texture3D
  67.     int texWrapR;       /* GL_CLAMP or GL_REPEAT                                          */
  68. #endif
  69. #ifdef GL_SGIS_texture4D
  70.     int texWrapQ;       /* GL_CLAMP or GL_REPEAT                                          */
  71. #endif
  72. #ifdef GL_SGIS_detail_texture
  73.     GLint detailLevel;
  74.     GLenum detailMode;
  75.     int detailWidth;
  76.     int detailHeight;
  77. #endif
  78.     int texComps;       /* [1,4]                                                          */
  79. #ifdef GL_SGIX_texture_scale_bias
  80.     /* YOU CANNOT rearrange these next eight members! */
  81.     GLfloat texRedScale;
  82.     GLfloat texGreenScale;
  83.     GLfloat texBlueScale;
  84.     GLfloat texAlphaScale;
  85.     GLfloat texRedBias;
  86.     GLfloat texGreenBias;
  87.     GLfloat texBlueBias;
  88.     GLfloat texAlphaBias;
  89. #endif
  90. #ifdef GL_SGI_texture_color_table
  91.     int texColorTable;
  92.     int texColorTableWidth;
  93.     int texColorTableInternalFormat;
  94. #endif
  95. #ifdef GL_SGIS_texture_select
  96.     int texSelect;
  97. #endif
  98.     int texFunc;        /* GL_MODULATE, GL_BLEND, or GL_DECAL                             */
  99.     int texGen;         /* Can be Off, GL_SPHERE_MAP, GL_OBJECT_LINEAR, or GL_EYE_LINEAR  */
  100.     GLfloat texLOD;/* scales texture over coordinates                                */
  101.                         /*          OR       numBgnEnds * facetsPerBgnEnd * vertsPerFacet */
  102.     float acceptObjs;   /* [0.0,1.0] acceptObjs + rejectObjs + clipObjs = 1.0              */
  103.     float rejectObjs;   /* [0.0,1.0]                                                      */
  104.     float clipObjs;      /* [0.0,1.0]                                                      */
  105.     int colorDim;       /* Dimension of color data (i.e. RGB or RGBA) [3, 4] */
  106.     int zOrder;       /* Coplanar, Random, FrontToBack, BackToFront */
  107. #ifdef GL_SGIS_multisample
  108.     int multisample;
  109. #endif
  110.     int texDim;
  111.     GLfloat* traversalData;
  112.     /* void Execute(TestPtr);   */                /* virtual function */
  113.     /* int SetState(TestPtr);  */                 /* virtual function */
  114.     /* void (*SetExecuteFunc)(TestPtr); */        /* virtual function */
  115. #elif (defined(INC_REASON)) && (INC_REASON == INFO_ITEM_ARRAY)
  116. #include "Drawn.h"
  117.     {
  118.         ColorDim,
  119.         "Dimension of Color Data",
  120.         offset(colorDim),
  121.         RangedInteger,
  122.         {
  123.             { 3 },
  124. #ifdef FULL_COLOR_PATHS
  125.         { 4 },
  126. #else
  127.             { 3 },
  128. #endif
  129.         },
  130.         { 3 }
  131.     },
  132.     {
  133.         Projection,
  134.         "Projection Matrix Type",
  135.         offset(projection),
  136.         Enumerated,
  137.         {
  138.             { Parallel,         "Parallel" },
  139.             { Perspective,      "Perspective" },
  140.             { End }
  141.         },
  142.         { Perspective }
  143.     },
  144.     {
  145.         AcceptObjs,
  146.         "Fraction of Primitives Trivially Accepted",
  147.         offset(acceptObjs),
  148.         RangedFloat,
  149.         {
  150.             { 0.0 },
  151.             { 1.0 }
  152.         },
  153.         { NotUsed, 1.0 }
  154.     },
  155.     {
  156.         RejectObjs,
  157.         "Fraction of Primitives Trivially Rejected",
  158.         offset(rejectObjs),
  159.         RangedFloat,
  160.         {
  161.             { 0.0 },
  162.             { 1.0 }
  163.         },
  164.         { NotUsed, 0.0 }
  165.     },
  166.     {
  167.         ClipObjs,
  168.         "Fraction of Primitives Clipped",
  169.         offset(clipObjs),
  170.         RangedFloat,
  171.         {
  172.             { 0.0 },
  173.             { 1.0 }
  174.         },
  175.         { NotUsed, 0.0 }
  176.     },
  177.     {
  178.         DepthOrder,
  179.         "Vertex/RasterPos Depth Ordering",
  180.         offset(zOrder),
  181.         Enumerated,
  182.         {
  183.             { Coplanar,                 "Coplanar" },
  184.             { Random,                   "Random" },
  185.             { BackToFront,              "BackToFront" },
  186.             { FrontToBack,              "FrontToBack" },
  187.             { End }
  188.         },
  189.         { Coplanar }
  190.     },
  191.     {
  192.         TexGen,
  193.         "Texture Generation",
  194.         offset(texGen),
  195.         Enumerated,
  196.         {
  197.             { Off,                      "Off" },
  198.             { GL_SPHERE_MAP,            "GL_SPHERE_MAP" },
  199.             { GL_EYE_LINEAR,            "GL_EYE_LINEAR" },
  200.             { GL_OBJECT_LINEAR,         "GL_OBJECT_LINEAR" },
  201.             { End }
  202.         },
  203.         { Off }
  204.     },
  205.     {
  206.         TexTarget,
  207.         "Texture Target",
  208.         offset(texture),
  209.         Enumerated,
  210.         {
  211.             { Off,                      "Off" },
  212. #ifdef FULL_TEXTURE_PATHS
  213.             { GL_TEXTURE_1D,            "GL_TEXTURE_1D" },
  214. #endif
  215.             { GL_TEXTURE_2D,            "GL_TEXTURE_2D" },
  216. #if defined(FULL_TEXTURE_PATHS) && defined(GL_EXT_texture3D)
  217.             { GL_TEXTURE_3D_EXT,        "GL_TEXTURE_3D_EXT" },
  218. #endif
  219.             { End }
  220.         },
  221.         { Off }
  222.     },
  223.     {
  224.         TexWidth,
  225.         "Texture Width",
  226.         offset(texWidth),
  227.         RangedInteger,
  228.         {
  229.             { 1 },
  230.             { 65536 }
  231.         },
  232.         { 64 }
  233.     },
  234.     {
  235.         TexHeight,
  236.         "Texture Height",
  237.         offset(texHeight),
  238.         RangedInteger,
  239.         {
  240.             { 1 },
  241.             { 65536 }
  242.         },
  243.         { 64 }
  244.     },
  245. #ifdef GL_EXT_texture3D
  246.     {
  247.         TexDepth,
  248.         "Texture Depth",
  249.         offset(texDepth),
  250.         RangedInteger,
  251.         {
  252.             { 1 },
  253.             { 65536 }
  254.         },
  255.         { 64 }
  256.     },
  257. #endif
  258. #ifdef GL_SGIS_texture4D
  259.     {
  260.         TexExtent,
  261.         "Texture Extent",
  262.         offset(texExtent),
  263.         RangedInteger,
  264.         {
  265.             { 1 },
  266.             { 65536 }
  267.         },
  268.         { 1 }
  269.     },
  270. #endif
  271.     {
  272.         TexBorder,
  273.         "Texture Border",
  274.         offset(texBorder),
  275.         RangedInteger,
  276.         {
  277.             { 0 },
  278. #ifdef GL_SGIS_texture_filter4
  279.             { 2 },
  280. #else
  281.             { 1 }
  282. #endif
  283.         },
  284.         { 0 }
  285.     },
  286.     {
  287.         TexComps,
  288.         "Internal Texture Components",
  289.         offset(texComps),
  290.         Enumerated,
  291.         {
  292.             { 1,            "1" },
  293.             { 2,            "2" },
  294.             { 3,            "3" },
  295.             { 4,            "4" },
  296. #ifdef GL_EXT_texture
  297.             { GL_ALPHA,            "GL_ALPHA" },
  298.             { GL_ALPHA4_EXT,        "GL_ALPHA4_EXT" },
  299.             { GL_ALPHA8_EXT,        "GL_ALPHA8_EXT" },
  300.             { GL_ALPHA12_EXT,        "GL_ALPHA12_EXT" },
  301.             { GL_ALPHA16_EXT,        "GL_ALPHA16_EXT" },
  302.             { GL_LUMINANCE,        "GL_LUMINANCE" },
  303.             { GL_LUMINANCE4_EXT,    "GL_LUMINANCE4_EXT" },
  304.             { GL_LUMINANCE8_EXT,    "GL_LUMINANCE8_EXT" },
  305.             { GL_LUMINANCE12_EXT,    "GL_LUMINANCE12_EXT" },
  306.             { GL_LUMINANCE16_EXT,    "GL_LUMINANCE16_EXT" },
  307.             { GL_LUMINANCE_ALPHA,    "GL_LUMINANCE_ALPHA" },
  308.             { GL_LUMINANCE4_ALPHA4_EXT,    "GL_LUMINANCE4_ALPHA4_EXT" },
  309.             { GL_LUMINANCE6_ALPHA2_EXT,    "GL_LUMINANCE6_ALPHA2_EXT" },
  310.             { GL_LUMINANCE8_ALPHA8_EXT,    "GL_LUMINANCE8_ALPHA8_EXT" },
  311.             { GL_LUMINANCE12_ALPHA4_EXT,"GL_LUMINANCE12_ALPHA4_EXT" },
  312.             { GL_LUMINANCE12_ALPHA12_EXT,"GL_LUMINANCE12_ALPHA12_EXT" },
  313.             { GL_LUMINANCE16_ALPHA16_EXT,"GL_LUMINANCE16_ALPHA16_EXT" },
  314.             { GL_INTENSITY_EXT,        "GL_INTENSITY_EXT" },
  315.             { GL_INTENSITY4_EXT,    "GL_INTENSITY4_EXT" },
  316.             { GL_INTENSITY8_EXT,    "GL_INTENSITY8_EXT" },
  317.             { GL_INTENSITY12_EXT,    "GL_INTENSITY12_EXT" },
  318.             { GL_INTENSITY16_EXT,    "GL_INTENSITY16_EXT" },
  319.             { GL_RGB,            "GL_RGB" },
  320.             { GL_RGB2_EXT,        "GL_RGB2_EXT" },
  321.             { GL_RGB4_EXT,        "GL_RGB4_EXT" },
  322.             { GL_RGB5_EXT,        "GL_RGB5_EXT" },
  323.             { GL_RGB5_A1_EXT,        "GL_RGB5_A1_EXT" },
  324.             { GL_RGB8_EXT,        "GL_RGB8_EXT" },
  325.             { GL_RGB10_EXT,        "GL_RGB10_EXT" },
  326.             { GL_RGB10_A2_EXT,        "GL_RGB10_A2_EXT" },
  327.             { GL_RGB12_EXT,        "GL_RGB12_EXT" },
  328.             { GL_RGB16_EXT,        "GL_RGB16_EXT" },
  329.             { GL_RGBA,            "GL_RGBA" },
  330.             { GL_RGBA2_EXT,        "GL_RGBA2_EXT" },
  331.             { GL_RGBA4_EXT,        "GL_RGBA4_EXT" },
  332.             { GL_RGBA8_EXT,        "GL_RGBA8_EXT" },
  333.             { GL_RGBA12_EXT,        "GL_RGBA12_EXT" },
  334.             { GL_RGBA16_EXT,        "GL_RGBA16_EXT" },
  335. #endif
  336. #ifdef GL_SGIS_texture_select
  337.             { GL_DUAL_ALPHA4_SGIS,        "GL_DUAL_ALPHA4_SGIS" },
  338.             { GL_DUAL_ALPHA8_SGIS,        "GL_DUAL_ALPHA8_SGIS" },
  339.             { GL_DUAL_ALPHA12_SGIS,        "GL_DUAL_ALPHA12_SGIS" },
  340.             { GL_DUAL_ALPHA16_SGIS,        "GL_DUAL_ALPHA16_SGIS" },
  341.             { GL_DUAL_LUMINANCE4_SGIS,        "GL_DUAL_LUMINANCE4_SGIS" },
  342.             { GL_DUAL_LUMINANCE8_SGIS,        "GL_DUAL_LUMINANCE8_SGIS" },
  343.             { GL_DUAL_LUMINANCE12_SGIS,        "GL_DUAL_LUMINANCE12_SGIS" },
  344.             { GL_DUAL_LUMINANCE16_SGIS,        "GL_DUAL_LUMINANCE16_SGIS" },
  345.             { GL_DUAL_INTENSITY4_SGIS,        "GL_DUAL_INTENSITY4_SGIS" },
  346.             { GL_DUAL_INTENSITY8_SGIS,        "GL_DUAL_INTENSITY8_SGIS" },
  347.             { GL_DUAL_INTENSITY12_SGIS,        "GL_DUAL_INTENSITY12_SGIS" },
  348.             { GL_DUAL_INTENSITY16_SGIS,        "GL_DUAL_INTENSITY16_SGIS" },
  349.             { GL_DUAL_LUMINANCE_ALPHA4_SGIS,    "GL_DUAL_LUMINANCE_ALPHA4_SGIS" },
  350.             { GL_DUAL_LUMINANCE_ALPHA8_SGIS,    "GL_DUAL_LUMINANCE_ALPHA8_SGIS" },
  351.             { GL_QUAD_ALPHA4_SGIS,        "GL_QUAD_ALPHA4_SGIS" },
  352.             { GL_QUAD_ALPHA8_SGIS,        "GL_QUAD_ALPHA8_SGIS" },
  353.             { GL_QUAD_LUMINANCE4_SGIS,        "GL_QUAD_LUMINANCE4_SGIS" },
  354.             { GL_QUAD_LUMINANCE8_SGIS,        "GL_QUAD_LUMINANCE8_SGIS" },
  355.             { GL_QUAD_INTENSITY4_SGIS,        "GL_QUAD_INTENSITY4_SGIS" },
  356.             { GL_QUAD_INTENSITY8_SGIS,        "GL_QUAD_INTENSITY8_SGIS" },
  357. #endif
  358.             { End }
  359.         },
  360.         { 3 }
  361.     },
  362. #ifdef GL_SGIS_texture_select
  363.     {
  364.         TexCompSelect,
  365.         "Texture Component Selected",
  366.         offset(texSelect),
  367.         RangedInteger,
  368.         {
  369.             { 0 },
  370.             { 3 }
  371.         },
  372.         { 0 }
  373.     },
  374. #endif
  375.     {
  376.         TexLOD,
  377.         "Texture Level Of Detail",
  378.         offset(texLOD),
  379.         RangedFloatOrInt,
  380.         {
  381.             { -32. },
  382.             {  32. }
  383.         },
  384.         { NotUsed, 0. }
  385.     },
  386.     {
  387.         TexMagFilter,
  388.         "Texture Magnification Filter",
  389.         offset(texMagFilter),
  390.         Enumerated,
  391.         {
  392.             { GL_NEAREST,                "GL_NEAREST" },
  393.             { GL_LINEAR,                 "GL_LINEAR" },
  394. #ifdef GL_SGIS_texture_filter4
  395.             { GL_FILTER4_SGIS,           "GL_FILTER4_SGIS" },
  396. #endif
  397. #ifdef GL_SGIS_detail_texture
  398.             { GL_LINEAR_DETAIL_SGIS,     "GL_LINEAR_DETAIL_SGIS" },
  399.             { GL_LINEAR_DETAIL_ALPHA_SGIS, "GL_LINEAR_DETAIL_ALPHA_SGIS" },
  400.             { GL_LINEAR_DETAIL_COLOR_SGIS, "GL_LINEAR_DETAIL_COLOR_SGIS" },
  401. #endif
  402. #ifdef GL_SGIS_sharpen_texture
  403.             { GL_LINEAR_SHARPEN_SGIS,    "GL_LINEAR_SHARPEN_SGIS" },
  404.             { GL_LINEAR_SHARPEN_ALPHA_SGIS, "GL_LINEAR_SHARPEN_ALPHA_SGIS" },
  405.             { GL_LINEAR_SHARPEN_COLOR_SGIS, "GL_LINEAR_SHARPEN_COLOR_SGIS" },
  406. #endif
  407.             { End }
  408.         },
  409.         { GL_NEAREST }
  410.     },
  411.     {
  412.         TexMinFilter,
  413.         "Texture Minification Filter",
  414.         offset(texMinFilter),
  415.         Enumerated,
  416.         {
  417.             { GL_NEAREST,                "GL_NEAREST" },
  418.             { GL_LINEAR,                 "GL_LINEAR" },
  419. #ifdef GL_SGIS_texture_filter4
  420.             { GL_FILTER4_SGIS,           "GL_FILTER4_SGIS" },
  421. #endif
  422.             { GL_NEAREST_MIPMAP_NEAREST, "GL_NEAREST_MIPMAP_NEAREST" },
  423.             { GL_NEAREST_MIPMAP_LINEAR,  "GL_NEAREST_MIPMAP_LINEAR" },
  424.             { GL_LINEAR_MIPMAP_NEAREST,  "GL_LINEAR_MIPMAP_NEAREST" },
  425.             { GL_LINEAR_MIPMAP_LINEAR,   "GL_LINEAR_MIPMAP_LINEAR" },
  426.             { End }
  427.         },
  428.         { GL_NEAREST }
  429.     },
  430.     {
  431.         TexWrapS,
  432.         "Texture Wrap S",
  433.         offset(texWrapS),
  434.         Enumerated,
  435.         {
  436.             { GL_CLAMP,                  "GL_CLAMP" },
  437.             { GL_REPEAT,                 "GL_REPEAT" },
  438. #ifdef GL_SGIS_texture_border_clamp
  439.             { GL_CLAMP_TO_BORDER_SGIS,   "GL_CLAMP_TO_BORDER_SGIS" },
  440. #endif
  441. #ifdef GL_SGIS_texture_edge_clamp
  442.             { GL_CLAMP_TO_EDGE_SGIS,     "GL_CLAMP_TO_EDGE_SGIS" },
  443. #endif
  444.             { End }
  445.         },
  446.         { GL_REPEAT }
  447.     },
  448.     {
  449.         TexWrapT,
  450.         "Texture Wrap T",
  451.         offset(texWrapT),
  452.         Enumerated,
  453.         {
  454.             { GL_CLAMP,                  "GL_CLAMP" },
  455.             { GL_REPEAT,                 "GL_REPEAT" },
  456. #ifdef GL_SGIS_texture_border_clamp
  457.             { GL_CLAMP_TO_BORDER_SGIS,   "GL_CLAMP_TO_BORDER_SGIS" },
  458. #endif
  459. #ifdef GL_SGIS_texture_edge_clamp
  460.             { GL_CLAMP_TO_EDGE_SGIS,     "GL_CLAMP_TO_EDGE_SGIS" },
  461. #endif
  462.             { End }
  463.         },
  464.         { GL_REPEAT }
  465.     },
  466. #ifdef GL_EXT_texture3D
  467.     {
  468.         TexWrapR,
  469.         "Texture Wrap R",
  470.         offset(texWrapR),
  471.         Enumerated,
  472.         {
  473.             { GL_CLAMP,                  "GL_CLAMP" },
  474.             { GL_REPEAT,                 "GL_REPEAT" },
  475.  #ifdef GL_SGIS_texture_border_clamp
  476.             { GL_CLAMP_TO_BORDER_SGIS,   "GL_CLAMP_TO_BORDER_SGIS" },
  477.  #endif
  478.  #ifdef GL_SGIS_texture_edge_clamp
  479.             { GL_CLAMP_TO_EDGE_SGIS,     "GL_CLAMP_TO_EDGE_SGIS" },
  480.  #endif
  481.             { End }
  482.         },
  483.         { GL_REPEAT }
  484.     },
  485. #endif
  486. #ifdef GL_SGIS_texture4D
  487.     {
  488.         TexWrapQ,
  489.         "Texture Wrap Q",
  490.         offset(texWrapQ),
  491.         Enumerated,
  492.         {
  493.             { GL_CLAMP,                  "GL_CLAMP" },
  494.             { GL_REPEAT,                 "GL_REPEAT" },
  495.  #ifdef GL_SGIS_texture_border_clamp
  496.             { GL_CLAMP_TO_BORDER_SGIS,   "GL_CLAMP_TO_BORDER_SGIS" },
  497.  #endif
  498.  #ifdef GL_SGIS_texture_edge_clamp
  499.             { GL_CLAMP_TO_EDGE_SGIS,     "GL_CLAMP_TO_EDGE_SGIS" },
  500.  #endif
  501.             { End }
  502.         },
  503.         { GL_REPEAT }
  504.     },
  505. #endif
  506. #ifdef GL_SGIX_texture_scale_bias
  507.     {
  508.         PostTexFilterRedScale,
  509.         "Post Texture Filter Red Scale Factor",
  510.         offset(texRedScale),
  511.         UnrangedFloatOrInt,
  512.         {
  513.             { NotUsed }
  514.         },
  515.         { NotUsed, 1. }
  516.     },
  517.     {
  518.         PostTexFilterRedBias,
  519.         "Post Texture Filter Red Bias Factor",
  520.         offset(texRedBias),
  521.         UnrangedFloatOrInt,
  522.         {
  523.             { NotUsed }
  524.         },
  525.         { NotUsed, 0. }
  526.     },
  527.     {
  528.         PostTexFilterGreenScale,
  529.         "Post Texture Filter Green Scale Factor",
  530.         offset(texGreenScale),
  531.         UnrangedFloatOrInt,
  532.         {
  533.             { NotUsed }
  534.         },
  535.         { NotUsed, 1. }
  536.     },
  537.     {
  538.         PostTexFilterGreenBias,
  539.         "Post Texture Filter Green Bias Factor",
  540.         offset(texGreenBias),
  541.         UnrangedFloatOrInt,
  542.         {
  543.             { NotUsed }
  544.         },
  545.         { NotUsed, 0. }
  546.     },
  547.     {
  548.         PostTexFilterBlueScale,
  549.         "Post Texture Filter Blue Scale Factor",
  550.         offset(texBlueScale),
  551.         UnrangedFloatOrInt,
  552.         {
  553.             { NotUsed }
  554.         },
  555.         { NotUsed, 1. }
  556.     },
  557.     {
  558.         PostTexFilterBlueBias,
  559.         "Post Texture Filter Blue Bias Factor",
  560.         offset(texBlueBias),
  561.         UnrangedFloatOrInt,
  562.         {
  563.             { NotUsed }
  564.         },
  565.         { NotUsed, 0. }
  566.     },
  567.     {
  568.         PostTexFilterAlphaScale,
  569.         "Post Texture Filter Alpha Scale Factor",
  570.         offset(texAlphaScale),
  571.         UnrangedFloatOrInt,
  572.         {
  573.             { NotUsed }
  574.         },
  575.         { NotUsed, 1. }
  576.     },
  577.     {
  578.         PostTexFilterAlphaBias,
  579.         "Post Texture Filter Alpha Bias Factor",
  580.         offset(texAlphaBias),
  581.         UnrangedFloatOrInt,
  582.         {
  583.             { NotUsed }
  584.         },
  585.         { NotUsed, 0. }
  586.     },
  587. #endif
  588. #ifdef GL_SGI_texture_color_table
  589.     {
  590.         TexColorTable,
  591.         "Texture Color Table Enabled",
  592.         offset(texColorTable),
  593.         Enumerated,
  594.         {
  595.             { True,                     "True" },
  596.             { False,                    "False" },
  597.             { End }
  598.         },
  599.         { False }
  600.     },
  601.     {
  602.         TexColorTableWidth,
  603.         "Texture Color Table Width",
  604.         offset(texColorTableWidth),
  605.         RangedInteger,
  606.         {
  607.             { 1 },
  608.             { 65536 }
  609.         },
  610.         { 256 }
  611.     },
  612.     {
  613.         TexColorTableInternalFormat,
  614.         "Texture Color Table Internal Format",
  615.         offset(texColorTableInternalFormat),
  616.         Enumerated,
  617.         {
  618.             { 1,        "1" },
  619.             { 2,        "2" },
  620.             { 3,        "3" },
  621.             { 4,        "4" },
  622.             { GL_ALPHA,            "GL_ALPHA" },
  623.             { GL_ALPHA4_EXT,        "GL_ALPHA4_EXT" },
  624.             { GL_ALPHA8_EXT,        "GL_ALPHA8_EXT" },
  625.             { GL_ALPHA12_EXT,        "GL_ALPHA12_EXT" },
  626.             { GL_ALPHA16_EXT,        "GL_ALPHA16_EXT" },
  627.             { GL_LUMINANCE,        "GL_LUMINANCE" },
  628.             { GL_LUMINANCE4_EXT,    "GL_LUMINANCE4_EXT" },
  629.             { GL_LUMINANCE8_EXT,    "GL_LUMINANCE8_EXT" },
  630.             { GL_LUMINANCE12_EXT,    "GL_LUMINANCE12_EXT" },
  631.             { GL_LUMINANCE16_EXT,    "GL_LUMINANCE16_EXT" },
  632.             { GL_LUMINANCE_ALPHA,    "GL_LUMINANCE_ALPHA" },
  633.             { GL_LUMINANCE4_ALPHA4_EXT,    "GL_LUMINANCE4_ALPHA4_EXT" },
  634.             { GL_LUMINANCE6_ALPHA2_EXT,    "GL_LUMINANCE6_ALPHA2_EXT" },
  635.             { GL_LUMINANCE8_ALPHA8_EXT,    "GL_LUMINANCE8_ALPHA8_EXT" },
  636.             { GL_LUMINANCE12_ALPHA4_EXT,"GL_LUMINANCE12_ALPHA4_EXT" },
  637.             { GL_LUMINANCE12_ALPHA12_EXT,"GL_LUMINANCE12_ALPHA12_EXT" },
  638.             { GL_LUMINANCE16_ALPHA16_EXT,"GL_LUMINANCE16_ALPHA16_EXT" },
  639.             { GL_INTENSITY_EXT,        "GL_INTENSITY_EXT" },
  640.             { GL_INTENSITY4_EXT,    "GL_INTENSITY4_EXT" },
  641.             { GL_INTENSITY8_EXT,    "GL_INTENSITY8_EXT" },
  642.             { GL_INTENSITY12_EXT,    "GL_INTENSITY12_EXT" },
  643.             { GL_INTENSITY16_EXT,    "GL_INTENSITY16_EXT" },
  644.             { GL_RGB,            "GL_RGB" },
  645.             { GL_RGB2_EXT,        "GL_RGB2_EXT" },
  646.             { GL_RGB4_EXT,        "GL_RGB4_EXT" },
  647.             { GL_RGB5_EXT,        "GL_RGB5_EXT" },
  648.             { GL_RGB5_A1_EXT,        "GL_RGB5_A1_EXT" },
  649.             { GL_RGB8_EXT,        "GL_RGB8_EXT" },
  650.             { GL_RGB10_EXT,        "GL_RGB10_EXT" },
  651.             { GL_RGB10_A2_EXT,        "GL_RGB10_A2_EXT" },
  652.             { GL_RGB12_EXT,        "GL_RGB12_EXT" },
  653.             { GL_RGB16_EXT,        "GL_RGB16_EXT" },
  654.             { GL_RGBA,            "GL_RGBA" },
  655.             { GL_RGBA2_EXT,        "GL_RGBA2_EXT" },
  656.             { GL_RGBA4_EXT,        "GL_RGBA4_EXT" },
  657.             { GL_RGBA8_EXT,        "GL_RGBA8_EXT" },
  658.             { GL_RGBA12_EXT,        "GL_RGBA12_EXT" },
  659.             { GL_RGBA16_EXT,        "GL_RGBA16_EXT" },
  660.             { End }
  661.         },
  662.         { GL_RGBA8_EXT }
  663.     },
  664. #endif
  665.     {
  666.         TexFunc,
  667.         "Texture Function",
  668.         offset(texFunc),
  669.         Enumerated,
  670.         {
  671.             { GL_MODULATE,              "GL_MODULATE" },
  672.             { GL_BLEND,                 "GL_BLEND" },
  673.             { GL_DECAL,                 "GL_DECAL" },
  674. #ifdef GL_EXT_texture
  675.             { GL_REPLACE_EXT,           "GL_REPLACE_EXT" },
  676. #endif
  677.             { End }
  678.         },
  679.         { GL_DECAL }
  680.     },
  681. #ifdef GL_SGIS_detail_texture
  682.     {
  683.         TexDetailWidth,
  684.         "Detail Texture Width",
  685.         offset(detailWidth),
  686.         RangedInteger,
  687.         {
  688.             { 1 },
  689.             { 1024 }
  690.         },
  691.         { 256 }
  692.     },
  693.     {
  694.         TexDetailHeight,
  695.         "Detail Texture Height",
  696.         offset(detailHeight),
  697.         RangedInteger,
  698.         {
  699.             { 1 },
  700.             { 1024 }
  701.         },
  702.         { 256 }
  703.     },
  704.     {
  705.         TexDetailLevel,
  706.         "Detail Texture Level",
  707.         offset(detailLevel),
  708.         RangedInteger,
  709.         {
  710.             { 0 },
  711.             { 1024 }
  712.         },
  713.         { 4 }
  714.     },
  715.     {
  716.         TexDetailMode,
  717.         "Detail Texture Mode",
  718.         offset(detailMode),
  719.         Enumerated,
  720.         {
  721.             { GL_MODULATE,               "GL_MODULATE" },
  722.             { GL_ADD,                    "GL_ADD" },
  723.             { End }
  724.         },
  725.         { GL_ADD }
  726.     },
  727. #endif
  728.     {
  729.         Fog,
  730.         "Fogging Mode",
  731.         offset(fogMode),
  732.         Enumerated,
  733.         {
  734.             { Off,              "Off" },
  735.             { GL_LINEAR,        "GL_LINEAR" },
  736.             { GL_EXP,           "GL_EXP" },
  737.             { GL_EXP2,          "GL_EXP2" },
  738.             { End }
  739.         },
  740.         { Off }
  741.     },
  742.     {
  743.         AlphaTest,
  744.         "Alpha Test Function",
  745.         offset(alphaTest),
  746.         Enumerated,
  747.         {
  748.             { Off,                      "Off" },
  749.             { GL_NEVER,                 "GL_NEVER" },
  750.             { GL_LESS,                  "GL_LESS" },
  751.             { GL_EQUAL,                 "GL_EQUAL" },
  752.             { GL_LEQUAL,                "GL_LEQUAL" },
  753.             { GL_GREATER,               "GL_GREATER" },
  754.             { GL_NOTEQUAL,              "GL_NOTEQUAL" },
  755.             { GL_GEQUAL,                "GL_GEQUAL" },
  756.             { GL_ALWAYS,                "GL_ALWAYS" },
  757.             { End }
  758.         },
  759.         { Off }
  760.     },
  761.     {
  762.         AlphaRef,
  763.         "Alpha Reference Value",
  764.         offset(alphaRef),
  765.         RangedFloat,
  766.         {
  767.        { 0.0 },
  768.        { 1.0 }
  769.         },
  770.         { NotUsed, 0.0 }
  771.     },
  772.     {
  773.         StencilTest,
  774.         "Stencil Test Function",
  775.         offset(stencilTest),
  776.         Enumerated,
  777.         {
  778.             { Off,                      "Off" },
  779.             { GL_NEVER,                 "GL_NEVER" },
  780.             { GL_LESS,                  "GL_LESS" },
  781.             { GL_EQUAL,                 "GL_EQUAL" },
  782.             { GL_LEQUAL,                "GL_LEQUAL" },
  783.             { GL_GREATER,               "GL_GREATER" },
  784.             { GL_NOTEQUAL,              "GL_NOTEQUAL" },
  785.             { GL_GEQUAL,                "GL_GEQUAL" },
  786.             { GL_ALWAYS,                "GL_ALWAYS" },
  787.             { End }
  788.         },
  789.         { Off }
  790.     },
  791.     {
  792.         DepthTest,
  793.         "Depth Test Function",
  794.         offset(depthTest),
  795.         Enumerated,
  796.         {
  797.             { Off,                      "Off" },
  798.             { GL_NEVER,                 "GL_NEVER" },
  799.             { GL_LESS,                  "GL_LESS" },
  800.             { GL_EQUAL,                 "GL_EQUAL" },
  801.             { GL_LEQUAL,                "GL_LEQUAL" },
  802.             { GL_GREATER,               "GL_GREATER" },
  803.             { GL_NOTEQUAL,              "GL_NOTEQUAL" },
  804.             { GL_GEQUAL,                "GL_GEQUAL" },
  805.             { GL_ALWAYS,                "GL_ALWAYS" },
  806.             { End }
  807.         },
  808.         { Off }
  809.     },
  810.     {
  811.         DepthMask,
  812.         "Depth Mask",
  813.         offset(depthMask),
  814.         Enumerated,
  815.         {
  816.             { Off,                      "Off" },
  817.             { On,                       "On" },
  818.             { End }
  819.         },
  820.         { On }
  821.     },
  822.     {
  823.         Blend,
  824.         "Blend Enabled",
  825.         offset(blend),
  826.         Enumerated,
  827.         {
  828.             { Off,                      "Off" },
  829.             { On,                       "On" },
  830.             { End }
  831.         },
  832.         { Off }
  833.     },
  834. #if defined(GL_EXT_blend_logic_op) || defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_subtract)
  835.     {
  836.         BlendEquation,
  837.         "Blend Equation",
  838.         offset(blendEq),
  839.         Enumerated,
  840.         {
  841.             { GL_FUNC_ADD_EXT,          "GL_FUNC_ADD_EXT" },
  842.  #ifdef GL_EXT_blend_logic_op
  843.             { GL_LOGIC_OP,              "GL_LOGIC_OP" },
  844.  #endif
  845.  #ifdef GL_EXT_blend_minmax
  846.             { GL_MIN_EXT,               "GL_MIN_EXT" },
  847.             { GL_MAX_EXT,               "GL_MAX_EXT" },
  848.  #endif
  849.  #ifdef GL_EXT_blend_subtract
  850.             { GL_FUNC_SUBTRACT_EXT,     "GL_FUNC_SUBTRACT_EXT" },
  851.             { GL_FUNC_REVERSE_SUBTRACT_EXT, "GL_FUNC_REVERSE_SUBTRACT_EXT" },
  852.  #endif
  853.             { End }
  854.         },
  855.         { GL_FUNC_ADD_EXT }
  856.     },
  857. #endif
  858.     {
  859.         SrcBlendFunc,
  860.         "Source Blend Function",
  861.         offset(srcBlend),
  862.         Enumerated,
  863.         {
  864.             { GL_ZERO,                  "GL_ZERO" },
  865.             { GL_ONE,                   "GL_ONE" },
  866.             { GL_DST_COLOR,             "GL_DST_COLOR" },
  867.             { GL_ONE_MINUS_DST_COLOR,   "GL_ONE_MINUS_DST_COLOR" },
  868.             { GL_SRC_ALPHA,             "GL_SRC_ALPHA" },
  869.             { GL_ONE_MINUS_SRC_ALPHA,   "GL_ONE_MINUS_SRC_ALPHA" },
  870.             { GL_DST_ALPHA,             "GL_DST_ALPHA" },
  871.             { GL_ONE_MINUS_DST_ALPHA,   "GL_ONE_MINUS_DST_ALPHA" },
  872.             { GL_SRC_ALPHA_SATURATE,    "GL_SRC_ALPHA_SATURATE" },
  873. #ifdef GL_EXT_blend_color
  874.             { GL_CONSTANT_COLOR_EXT,    "GL_CONSTANT_COLOR_EXT" },
  875.             { GL_ONE_MINUS_CONSTANT_COLOR_EXT, "GL_ONE_MINUS_CONSTANT_COLOR_EXT" },
  876.             { GL_CONSTANT_ALPHA_EXT,    "GL_CONSTANT_ALPHA_EXT" },
  877.             { GL_ONE_MINUS_CONSTANT_ALPHA_EXT, "GL_ONE_MINUS_CONSTANT_ALPHA_EXT" },
  878. #endif
  879.             { End }
  880.         },
  881.         { GL_ONE }
  882.     },
  883.     {
  884.         DstBlendFunc,
  885.         "Destination Blend Function",
  886.         offset(dstBlend),
  887.         Enumerated,
  888.         {
  889.             { GL_ZERO,                  "GL_ZERO" },
  890.             { GL_ONE,                   "GL_ONE" },
  891.             { GL_SRC_COLOR,             "GL_SRC_COLOR" },
  892.             { GL_ONE_MINUS_SRC_COLOR,   "GL_ONE_MINUS_SRC_COLOR" },
  893.             { GL_SRC_ALPHA,             "GL_SRC_ALPHA" },
  894.             { GL_ONE_MINUS_SRC_ALPHA,   "GL_ONE_MINUS_SRC_ALPHA" },
  895.             { GL_DST_ALPHA,             "GL_DST_ALPHA" },
  896.             { GL_ONE_MINUS_DST_ALPHA,   "GL_ONE_MINUS_DST_ALPHA" },
  897. #ifdef GL_EXT_blend_color
  898.             { GL_CONSTANT_COLOR_EXT,    "GL_CONSTANT_COLOR_EXT" },
  899.             { GL_ONE_MINUS_CONSTANT_COLOR_EXT, "GL_ONE_MINUS_CONSTANT_COLOR_EXT" },
  900.             { GL_CONSTANT_ALPHA_EXT,    "GL_CONSTANT_ALPHA_EXT" },
  901.             { GL_ONE_MINUS_CONSTANT_ALPHA_EXT, "GL_ONE_MINUS_CONSTANT_ALPHA_EXT" },
  902. #endif
  903.             { End }
  904.         },
  905.         { GL_ONE }
  906.     },
  907.     {
  908.         LogicOp,
  909.         "Logical Operation",
  910.         offset(logicOp),
  911.         Enumerated,
  912.         {
  913.             { Off,              "Off" },
  914.             { GL_AND,           "GL_AND" },
  915.             { GL_AND_INVERTED,  "GL_AND_INVERTED" },
  916.             { GL_AND_REVERSE,   "GL_AND_REVERSE" },
  917.             { GL_CLEAR,         "GL_CLEAR" },
  918.             { GL_COPY,          "GL_COPY" },
  919.             { GL_COPY_INVERTED, "GL_COPY_INVERTED" },
  920.             { GL_EQUIV,         "GL_EQUIV" },
  921.             { GL_INVERT,        "GL_INVERT" },
  922.             { GL_NAND,          "GL_NAND" },
  923.             { GL_NOOP,          "GL_NOOP" },
  924.             { GL_NOR,           "GL_NOR" },
  925.             { GL_OR,            "GL_OR" },
  926.             { GL_OR_INVERTED,   "GL_OR_INVERTED" },
  927.             { GL_OR_REVERSE,    "GL_OR_REVERSE" },
  928.             { GL_SET,           "GL_SET" },
  929.             { GL_XOR,           "GL_XOR" },
  930.             { End }
  931.         },
  932.         { Off }
  933.     },
  934. #ifdef GL_SGIS_multisample
  935.     {
  936.         Multisample,
  937.         "Multisample Antialiasing",
  938.         offset(multisample),
  939.         Enumerated,
  940.         {
  941.             { Off,              "Off" },
  942.             { On,               "On" },
  943.             { End }
  944.         },
  945.         { Off }
  946.     },
  947. #endif
  948.  
  949. #else  /* INC_REASON not defined, treat as plain include */
  950. #ifndef _Primitve_h
  951. #define _Primitve_h
  952.  
  953. #include "Drawn.h"
  954. #include "General.h"
  955. #include "Print.h"
  956. #include "TestName.h"
  957. #include "PropName.h"
  958. #include "Global.h"
  959. #include "AttrName.h"
  960. #ifdef WIN32
  961. #include <windows.h>
  962. #endif
  963. #include <GL/gl.h>
  964. #include <GL/glu.h>
  965. #include "Random.h"
  966. #include "FuncEnum.h"
  967.  
  968. typedef struct _Primitive {
  969. #define INC_REASON INFO_ITEM_STRUCT
  970. #include "Primitve.h"
  971. #undef INC_REASON
  972. } Primitive, *PrimitivePtr;
  973.  
  974. void new_Primitive(PrimitivePtr);
  975. void delete_Primitive(TestPtr);
  976. void Primitive__SetProjection(PrimitivePtr, int);
  977. int Primitive__SetState(TestPtr);
  978. void CalcRGBColor(GLfloat, GLfloat*, GLfloat*, GLfloat*);
  979. void AddColorRGBData(GLfloat*, GLfloat, GLfloat, GLfloat);
  980. void AddColorRGBAData(GLfloat*, GLfloat, GLfloat, GLfloat);
  981. void AddColorCIData(GLfloat*, GLfloat, GLfloat, int, int);
  982. #ifdef GL_SGI_array_formats
  983. void AddColorCIDataUI(GLfloat*, GLfloat, GLfloat, int, int);
  984. #endif
  985. void AddTexture1DData(GLfloat*, GLfloat, GLfloat, GLfloat);
  986. void AddTexture2DData(GLfloat*, GLfloat, GLfloat, GLfloat, GLfloat);
  987. void AddTexture3DData(GLfloat*, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
  988.  
  989. /* These constants are used in the function enumeration scheme */
  990. #define NONE 0
  991. #define PER_VERTEX 1
  992. #define PER_FACET 2
  993. #define CI 0
  994. #define RGB 1
  995.  
  996. #endif /* file not already included */
  997. #endif /* INC_REASON not defined */
  998.